Skip to content

feat(web): React UI v2.0 — Phase 2 Tasks 28+29 (approvals + agent defs) — Phase 2 complete#23

Merged
aksOps merged 2 commits into
mainfrom
feat/web-phase-2-finish
May 16, 2026
Merged

feat(web): React UI v2.0 — Phase 2 Tasks 28+29 (approvals + agent defs) — Phase 2 complete#23
aksOps merged 2 commits into
mainfrom
feat/web-phase-2-finish

Conversation

@aksOps

@aksOps aksOps commented May 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Final two hooks of Phase 2. After this lands, Phase 2 is fully complete (Tasks 21-31) and Phase 3 (Shell components — Topbar, Statusbar, SessionsRail, FlowStrip, App wiring) can begin.

  • Task 28useApprovalsQueue() (web/src/state/useApprovalsQueue.ts) — pure composition over useSessionList(). Filters sessions where status === 'awaiting_input', sorts by updated_at ascending (oldest-waiting-first). Returns { queue, count, isLoading, error }. No new fetch, no new SSE — derives entirely from the cached session list. 3 tests.
  • Task 29useAgentDefinitions() (web/src/state/useAgentDefinitions.ts) — @tanstack/react-query cache-once for /api/v1/agents. Returns { list, byName }: list for ordered iteration (FlowStrip), byName for O(1) lookup (SelectedPanel). staleTime: Infinity, gcTime: Infinity since agent definitions don't change at runtime. 3 tests.

Validation

Nothing touches src/runtime/ — no dist/app.py regen.

Phase 2 retrospective

Task Title Tests
21 TS API types (no test — pure defs)
22 apiFetch client 3
23 useEventSource hook 2
24 useWebSocket fallback 4
25 sessionReducer 7
26 useSessionFull 3
27 useSessionList 3
28 useApprovalsQueue 3
29 useAgentDefinitions 3
30 useUiHints 2
31 selectedRef 4
Total 34 new + 30 from Phase 1 = 64

What's next

Phase 3 (Tasks 32-36): Shell components — Topbar, Statusbar, SessionsRail, FlowStrip, App wiring. These compose all of Phase 2's hooks into the visible UI shell.

Test plan

  • Vitest: 64/64 pass
  • Typecheck: exit 0
  • Build: clean
  • Pytest backend stays green
  • CI: lint + type + test + sonar + bundle + skill-lint
  • CI: SonarCloud quality gate

🤖 Generated with Claude Code

@sonarqubecloud

Copy link
Copy Markdown

@aksOps aksOps merged commit b620e3c into main May 16, 2026
9 checks passed
@aksOps aksOps deleted the feat/web-phase-2-finish branch May 16, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant